package main

import (
	"fmt"
	"math/rand"
	"time"
)

func repeat() <-chan interface{} {
	randStream := make(chan interface{})
	go func() {
		defer close(randStream)
		for i := 0; i < 10; i++ {
			time.Sleep(1 * time.Second)
			randStream <- rand.Intn(1000)
		}
	}()
	return randStream
}

//channal c是外部的，不确定何时关闭。orDone会根据c来产生新的channel，
//新的channel可通过done来关闭，而外部的c关闭时，新的channel也会关闭。
func orDone(done, c <-chan interface{}) <-chan interface{} {
	//TODO:实现or-done-channel
	return nil
}

//main函数中每隔1秒会打印出一个随机数，共输出10个。
//TODO:用orDone封装repeat()返回的channel，使之在3秒钟后结束输出。
//修改后的程序在执行时，只会输出2个左右的随机数。
func main() {
	for v := range repeat() {
		fmt.Println(v)
	}
}
